package com.hnkywl.sts.service.cwgl.kmys;

import com.google.gson.Gson;
import com.hnkywl.sts.dao.cwgl.kmys.CyfyysDao;
import com.hnkywl.sts.dao.cwgl.kmys.CykmdmysDao;
import com.hnkywl.sts.entity.cwgl.kmys.Cyfyys;
import com.hnkywl.sts.entity.cwgl.kmys.Cykmdmys;
import com.hnkywl.sts.entity.sys.Yg;
import com.hnkywl.sts.entity.zjgl.Pj;
import com.hnkywl.sts.service.sys.YgService;
import net.ruixin.orm.hibernate.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * User: ccr
 * Date: 13-5-17
 * Time: 上午10:28
 * To change this template use File | Settings | File Templates.
 */
@Service
public class CyfyysService {
    private CyfyysDao cyfyysDao;
    private CykmdmysService cykmdmysService;

    public String findAllFy(Long gsId,String kmdm,int pageNo,int pageSize){
        Page<Cyfyys> fyPage = this.cyfyysDao.findAllFy(gsId, kmdm, pageNo, pageSize);
        List<Cyfyys> fyList = fyPage.getResult() == null ? new ArrayList<Cyfyys>() : fyPage.getResult();
        List<Map> grid = new ArrayList<Map>();
        for( Cyfyys cyfyys : fyList){
            Map item = new HashMap();
            item.put("cyfyys.id",cyfyys.getId());
            item.put("cyfyys.codeId",cyfyys.getCodeId());
            item.put("cyfyys.kmdm",cyfyys.getKmdm());
            item.put("nbgsJc",cyfyys.getNbgs()==null?"":cyfyys.getNbgs().getJc());
            item.put("nbgsId",cyfyys.getNbgs()==null?"":cyfyys.getNbgs().getId());
            item.put("cyfyys.sl",cyfyys.getSl());
            item.put("cyfyys.fykmqc",cyfyys.getFykmqc());
            item.put("cyfyys.fykmjc",cyfyys.getFykmjc());
            item.put("cyfyys.fylb",cyfyys.getFylb());
            item.put("cyfyys.xtfl",cyfyys.getXtfl()==null?"":cyfyys.getXtfl());
            item.put("cyfyys.cykmdmys.jqcwkmmc",cyfyys.getCykmdmys()==null?"":cyfyys.getCykmdmys().getJqcwkmmc());
            grid.add(item);
        }
        return "{\"total\":" + fyPage.getTotalCount() + ",\"rows\":" + new Gson().toJson(grid) + "}";
    }

    public String findFyCombobox(Long sydwId){
        if(sydwId == null) return "[]";
        return new Gson().toJson(cyfyysDao.findFylbCombobox(sydwId));
    }

    @Transactional
    public void deleteByGsId(Long gsId) {
        cyfyysDao.deleteByGsId(gsId);
    }

    @Transactional
    public Cyfyys findFyByGsIdandCodeId(Long gsId, String codeId) {
        return  this.cyfyysDao.findFyByGsIdandCodeId(gsId,codeId);
    }


    @Transactional
    public void batchSave(List<Cyfyys> list,Long gsId){
        cyfyysDao.deleteByGsId(gsId);
        for (Cyfyys c : list){
            cyfyysDao.save(c);
        }
    }

    @Transactional
    public void save(Cyfyys cyfyys){
        Cyfyys c = cyfyysDao.get(cyfyys.getId());
        c.setKmdm(cyfyys.getKmdm());
        c.setFylb(cyfyys.getFylb());
        c.setFykmjc(cyfyys.getFykmjc());
        c.setFykmqc(cyfyys.getFykmqc());
        if(getSl(cyfyys.getCykmdmys().getJqcwkmmc())==null){
            c.setSl(cyfyys.getSl());
        }else{
            c.setSl(getSl(cyfyys.getCykmdmys().getJqcwkmmc()));
        }
        c.setCykmdmys(cykmdmysService.findKmdmByMc(c.getNbgs().getId(),cyfyys.getCykmdmys().getJqcwkmmc()));
        cyfyysDao.save(c);
    }

    public Double getSl(String kmdm){
        kmdm=kmdm.trim();
        String str2="";
        if(kmdm != null && !"".equals(kmdm)){
            for(int i=0;i<kmdm.length();i++){
                if(kmdm.charAt(i)>=48 && kmdm.charAt(i)<=57){
                    str2+=kmdm.charAt(i);
                }
            }
        }
        if(str2.equals("")){
            return null;
        }else{
            return Double.parseDouble(str2);
        }
    }

    @Transactional
    public Cyfyys findFyDetail(Long cyfyysId){
       return this.cyfyysDao.get(cyfyysId);
    }

    @Transactional
    public void saveFy(Cyfyys cyfyys) {
        cyfyys.setDateCreated(new Date());
        cyfyys.setLastUpdated(cyfyys.getDateCreated());
        cyfyys.setCreateUser(YgService.getCurrentYg());
        cyfyys.setCreateOrgan(YgService.getCurrentYg().getZggs());
        cyfyys.setCreateDepartment(YgService.getCurrentYg().getZgjg());
        this.cyfyysDao.save(cyfyys);
    }


    @Autowired
    public void setCyfyysDao(CyfyysDao cyfyysDao) {
        this.cyfyysDao = cyfyysDao;
    }
    @Autowired
    public void setCykmdmysService(CykmdmysService cykmdmysService) {
        this.cykmdmysService = cykmdmysService;
    }

}
